#include "MScThesis.h"

#include "PsoModel.h"
#include "BasicDebug.h"
#include "MainWindow.h"
#include "QGLRenderer.h"
#include "MathUtil.h"

#include "Node.h"
#include "RandomGsl.h"
#include "GpModel.h"
#include "TreeGenerator.h"
#include "ExperimentThread.h"

#include <QtGui/QApplication>
#include <QtGui/QDesktopWidget>

#ifdef Q_WS_X11
#include <X11/Xlib.h>
#endif

using namespace jcrada;

int MScThesis::main( int argc, char **argv ) {
#ifdef Q_WS_X11
    //    XInitThreads();
#endif
//    return ExperimentThread::main(argc,argv);
//    return RandomGsl::main(argc,argv);
//    return TreeGenerator::main(argc,argv);
//    return PsoModel::main(argc,argv);
//        RandomGsl::test();
//    return GpModel::main(argc, argv);
    //    return Node::main(argc, argv);
    //    return QGLRendererThread::main(argc,argv);
    //    return Thread::main(argc,argv);
    //    return BasicDebug::main(argc,argv);
    //    return Toolbox::main(argc,argv);
    //    return Creature::main(argc,argv);
    return MainWindow::main(argc, argv);
//        return MathUtil::test(argc,argv);
    //        return PsoModel::main(argc,argv);
    //    return Creature::main(argc, argv);
    //        return Toolbox::main(argc,argv);
    //    return QGLRendererThread::main(argc,argv);
    //        return QGLRenderer::main(argc,argv);
    //    return PsoNeuralModel::main(argc, argv);
    //    return MathUtil::test(argc,argv);
    //
    //    return HumanCreature::main(argc,argv);
    //    return RagdollDemo::main(argc,argv);
    //        return BulletSimulator::main(argc,argv);
    //    return btHuman::main(argc,argv);
    //    return NeuralNetwork::main(argc,argv);
    //    return NeuralLayer::main(argc,argv);
    //    return Neuron::main(argc,argv);
    //    return MainWindow::main(argc,argv);

    //    return GLWindow::main( argc, argv );

    //    QObject::connect(&simulator, SIGNAL(render()),
    //            &renderer, SLOT(updateGL()), Qt::DirectConnection);
    //
    //    QObject::connect(&application, SIGNAL(aboutToQuit()),
    //            &simulator, SLOT(stop()), Qt::DirectConnection);
    //    QObject::connect(&application, SIGNAL(aboutToQuit()),
    //            &renderer, SLOT(stop()), Qt::DirectConnection);

}
